<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title>QGLViewer - ChangeLog</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link href="qglviewer.css" rel="stylesheet" type="text/css" />
  <link rel="shortcut icon" href="images/qglviewer.ico" type="image/x-icon" />
  <link rel="icon" href="images/qglviewer.icon.png" type="image/png" />
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-23223012-2']);
    _gaq.push(['_trackPageview']);

    (function () {
      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
  </script>
</head>

<body>

  <div class="banner">
    <a class="qindex" href="index.html">Home</a>
    <a class="qindex" href="download.html">Download</a>
    <a class="qindex" href="examples/index.html">Gallery</a>
    <a class="qindex" href="refManual/hierarchy.html">Documentation</a>
    <a class="qindex highlight" href="developer.html">Developer</a>
  </div>

  <h1>Change Log</h1>

  <h2>Mar 13th 2022 - 2.8.0</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Updates for Qt6 compatibility (thanks Björn).</li>
  </ul>

  <h2>Nov 17th 2019 - 2.7.2</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Fix includes in <code>camera.h</code> (thanks Gianluca and Laurent).</li>
  </ul>

  <h2>Nov 17th 2017 - 2.7.1</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Fix deprecated message in constructor. Fixes #39 (thanks Carsten).</li>
  </ul>

  <h2>Jun 14th 2017 - 2.7.0</h2>
  This version has a minimum requirement of <b>Qt version 5.4</b>.<br/>
  <b>Changes in the API</b>
  <ul>
    <li><code>QGLViewer</code> extends <code>QOpenGLWidget</code> instead of the deprecated <code>QGLWidget</code> (huge thanks
      to Gianluca).</li>
    <li>
      Although there are minor differences between the two classes, the switch should be mostly invisible.
      <p>Using <code>update()</code> instead of <code>updateGL()</code> is one of them</p>
      The <code>renderText</code> methods were backported to maintain backward compatibility.
      <p>Some overloaded constructors (using a <code>QGLFormat</code> or a sharedWidget) are deprecated since they have no equivalent.</p>
    </li>
  </ul>

  <h2>Jul 16th 2016 - 2.6.4</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Add a <code>-qt4</code> or <code>-qt5</code> suffix to library file name on Linux. Fixes #18 (thanks Laurent).</li>
    <li>Edit the .pro of the examples to support the debug version of the library on Windows. Fixes #23 (thanks naubry).</li>
    <li><code>contribs</code> examples no longer build by default. Relied on deprecated GL calls (Fixes #31)</li>
    <li>Add <code>QMAKE_MAC_SDK</code> to fix compilation on Mac with recent XCode versions</li>
    <li>Fix compilation errors on ARMv7, when `qreal` is defined to `float` (Pull request from lrineau)</li>
  </ul>


  <h2>Jul 16th 2015 - 2.6.3</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Add dependency to native OpenGL drivers on Windows platform. No longer implicit since ANGLE is an alternative in Qt 5.5
      (thanks Andrea and Laurent).</li>
    <li>The library is now always built in the <code>QGLViewer</code> directory. The examples' pro files are simplified and more
      robust.
    </li>
    <li>Add some <code>libGlu</code> dependency in examples that rely on it (thanks Brice).</li>
  </ul>


  <h2>Jan 23nd 2015 - 2.6.2</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Fix <code>qreal</code> issue in <code>Quaternion::FromRotationMatrix()</code> (thanks Che, again).</li>
  </ul>


  <h2>Jan 22nd 2015 - 2.6.1</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Bug fix in <code>Camera::pointUnderPixel()</code> introduced by the switch to qreal (thanks Che).</li>
    <li><i>terrain</i> contrib example is deprecated.</li>
  </ul>


  <h2>Nov 17th 2014 - 2.6.0</h2>
  <b>Changes in the API</b>
  <ul>
    <li>The entire API now consistently uses the <code>qreal</code> (i.e <code>double</code>) type for floating point numbers.<br/>      This should not break code compatibility since types will mostly get automatically converted.<br/> Update your code
      if you use one of the <code>getX(qreal &amp; x)</code> methods, which take a reference as a parameter, and which type
      needs to be changed to <code>qreal</code>.
    </li>
  </ul>


  <h2>Nov 6th 2014 - 2.5.4</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Remove <code>libGLU</code> dependency on Mac since it conflicts with Yosemite (thanks Hae-Jeong, Federico).</li>
    <li>Fix compilation flags and include warning for Windows compilation (thanks Alexandre, David).</li>
    <li>Fix switch between camera's observer and fly modes (thanks Björn).</li>
  </ul>


  <h2>Sept 1st 2014 - 2.5.3</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Add <code>libGLU</code> dependency on the library for Linux (thanks Tingran).</li>
    <li>Add <code>algorithm</code> in VRender to remove VS warnings (thanks Jeffrey).</li>
    <li>Use <code>std::min/std::max</code> to fix Visual Studio compilation errors in VRender.</li>
    <li>Fix QFlag error with recent compilers in <code>saveSnapshot.cpp</code> (thanks xiaoyi).</li>
  </ul>


  <h2>Apr 10th 2014 - 2.5.2</h2>
  <b>Changes in the API</b>
  <ul>
    <li>Shortcut's <code>KeyboardAction</code> enum was made public.</li>
    <li>Camera's <code>revolveArountPoint</code> is renamed <code>pivotPoint</code>.</li>
    <li>ManipulatedCameraFrame's <code>flyUpVector</code> is renamed <code>sceneUpVector</code>.</li>
    <li>A new ManipulatedCameraFrame's <code>setRotatesAroundUpVector</code> method defines a new rotation mode, where the horizon
      is preserved.</li>
    <li>Similarly, a new <code>setZoomsOnPivotPoint</code> method defines a new zoom behavior.</li>
    <li>New ManipulatedFrame <code>zoomSensitivity</code> enables you to tune the effect of a mouse displacement on the zoom.</li>
    <li>New <code>GLfloat</code> overrides of Camera's <code>get..Matrix()</code> methods.</li>
    <li>Frame's <code>alignWithAxis</code> threshold set to 0 (i.e. it will always align).</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li>The Frame's <code>position()</code> method is faster and more precise in case there is no <code>referenceFrame</code>.</li>
    <li>ManipulatedFrame's default mouse rotation speed has been increased.</li>
    <li>DomUtils error messages improved.</li>
    <li>Added GLU library dependency on Linux platforms (thanks Lynn).</li>
  </ul>


  <h2>Feb 12th 2014 - 2.5.1</h2>
  <b>Changes in the API</b>
  <ul>
    <li>Support for Qt version 2 and 3 has been discontinued. Minimum supported Qt version is now Qt 4.0</li>
    <li>Two new <code>setMouseBinding</code> methods take an optional <code>Qt:Key</code> argument, indicating that this key
      has to be pressed to trigger the action. New similar <code>setWheelBinding</code> methods.</li>
    <li>Mouse binding getter functions names have been harmonized.</li>
    <li><code>setMouseBinding</code> methods accept only one button, instead of an improbable combination of buttons.</li>
    <li>Refactored include dependencies: you may have to manually include <code>QGLViewer/manipulatedFrame.h</code>.</li>
    <li><code>QGLViewer</code>'s <code>MouseHandler</code>, <code>ClickAction</code> and <code>MouseAction</code> enums are now
      public.
    </li>
    <li>New <code>ManipulatedFrame::currentMouseAction()</code> method.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li>The <code>RAP_FROM_PIXEL</code> click action resets the revolve around point to <code>sceneCenter</code> when there is
      no point under the cursor.</li>
    <li>Fly mode mouse bindings are no longer automatically restored in <code>restoreStateFromFile</code>.</li>
  </ul>

  <h2>Dec 19th 2013 - 2.5.0</h2>
  <b>Changes in the API</b>
  <ul>
    <li>All mouse bindings methods now take two parameters (keyboard modifiers and mouse buttons) instead of a combination of
      these.
    </li>
    <li>New <code>clearShortcuts</code> and <code>clearMouseBindings</code> methods reset all bindings.</li>
  </ul>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>ClickAction bindings (such as select, triggered by a Shift+Left click) fixed for Qt5.</li>
  </ul>

  <h2>Nov 17th 2013 - 2.4.1</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Using QWidget's <code>update()</code> instead of <code>updateGL()</code> for smoother updates.</li>
    <li>Projection and modelView matrix computation is cached for improved performance.</li>
    <li>Full code re-indent using tabs.</li>
  </ul>

  <h2>May 25th 2013 - 2.4.0</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li><b>Support for Qt version 5.</b> (thanks Gennady, Alastair and Laurent).</li>
    <li>Source code is available on <a href="https://github.com/GillesDebunne/libQGLViewer">github</a>.</li>
  </ul>

  <h2>May 24th 2012 - 2.3.17</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Compilation of the examples using a framework fixed on Mac.</li>
    <li>Installation as a static library can be configured using PREFIX on Mac too.</li>
  </ul>

  <h2>April 10th 2012 - 2.3.16</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Added <code>-lGLU</code> linked library on Linux when building the examples.</li>
  </ul>

  <h2>March 8th 2012 - 2.3.15</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Added a QGLViewer prefix so that headers are correctly when using the framework on mac.</li>
  </ul>

  <h2>March 2nd 2012 - 2.3.14</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Framework is now installed in the user's Library folder on mac (system's library is read-only on Lion)</li>
    <li>Added symbol export for designer plugin on windows.</li>
  </ul>

  <h2>February 24th 2012 - 2.3.13</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Handle lower case compilation folder names on windows/Qt 4.8.</li>
  </ul>

  <h2>February 14th 2012 - 2.3.12</h2>
  <b>Changes in the API</b>
  <ul>
    <li><code>Camera.setPhysicalDistanceToScreen</code> method has been deprecated. Use <code>setPhysicalScreenWidth</code> instead.</li>
  </ul>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Fixed glu include compilation problems with Qt 4.8</li>
    <li>Better documentation for the designer plugin installation</li>
  </ul>

  <h2>November 17th 2011 - 2.3.11</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Unneeded reference to Qt3 removed from <code>VRenderInterface</code> ui file (thanks David).</li>
    <li><code>qglviewer.rc</code> problem when compiling designerPlugin on windows. Again (thanks Dennis)</li>
  </ul>

  <h2>June 14th 2011 - 2.3.10</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>qglviewer.rc</code> problem when compiling designerPlugin on windows.</li>
    <li>Warning messages when using Qt3 support on windows.</li>
  </ul>

  <h2>December 4th 2010 - 2.3.9</h2>
  <b>Changes in the API</b>
  <ul>
    <li><code>Vec</code> now using <code>double</code> instead of <code>float</code></li>
  </ul>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Much simpler <a href="compilation.html">program compilation</a> explanations.</li>
    <li>Simpler and updated <a href="installWindows.html">windows</a> and <a href="installUnix.html">unix</a> installation pages.</li>
    <li>Improved examples' <code>.pro</code> for a better out-of-the-box compilation using Qt Creator.</li>
    <li>Added missing <code>qglviewer.rc</code> and <code>qglviewer.ico</code> files in package.</li>
  </ul>

  <h2>November 7th 2010 - 2.3.8</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>Vec</code> operations now return <code>double</code> instead of <code>float</code> to avoid precision issues (thanks
      Lionel).
    </li>
    <li>Support for Qt3 signal/slot cw file removed (thanks Nikos).</li>
  </ul>

  <h2>October 28th 2010 - 2.3.7</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Added Debug and Release dirs in search paths for lib on Win32 minGw.</li>
    <li>Made MinGw also create a debug version of the lib (thanks Eric).</li>
    <li>Warnings in VRender with Visual Studio removed.</li>
    <li>A few missing <code>double</code> replacement in <code>Quaternion</code> (thanks Pierre and Lionel).</li>
    <li>Application icon added on Windows platforms.</li>
  </ul>

  <b>Changes in the API</b>
  <ul>
    <li>New created viewers go in the first available position in <code>QGLViewerPool()</code> instead of always being appended
      (suggester Pierre).</li>
  </ul>


  <h2>May 29th 2010 - 2.3.6</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Minor fixes to ease the compilation using Qt3 or with gcc 4.3 (thanks Artur).</li>
    <li>Added the <code>qglviewer.icns</code> file which was missing from Mac package.</li>
    <li>Use of the <code>-Wl,-rpath</code> option eliminates the need for <code>LD_LIBRARY_PATH</code> tuning on Linux..</li>
    <li>New <code>.qch</code> file available to import documentation into Qt's assistant (suggester Laurent).</li>
  </ul>


  <h2>March 1st 2010 - 2.3.5</h2>
  <b>New features</b>
  <ul>
    <li>Mouse shortcuts displayed in help window use native display for Ctrl/Command/Alt/Option... keys.</li>
    <li>New mouse bindings added on Mac architecture to enable camera translation using the Option key (no right button on the
      touchpad).
    </li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li>Tuning <code>DYLD_LIBRARY_PATH</code> is no longer needed to run the examples on Mac architecture (Linux soon to come).</li>
    <li>Use of <code>CONFIG += no_keywords</code> so that the library can be used with Boost.</li>
    <li>Smoother compilation on Mac, now creating a Framework by default. Compilation documentation <a href="compilation.html">updated</a>.</li>
    <li><code>GL_DEPTH_TEST</code> disabled before rendering frame rate to fix a weird display on Mac (bugfinder FX).</li>
    <li>The <code>About</code> button has been moved to a cleaner new tab in the help window.</li>
    <li><code>WIN32</code> added to default <code>DEFINES</code> to fix compilation problems with Visual Studio when using the
      Intel compiler (bugfinder Jiawen).</li>
    <li>The examples applications now have a nice associated icon (Mac and Windows).</li>
    <li><code>restoreStateFromFile</code> updates camera aspect ratio when loading window's size.</li>
  </ul>

  <b>Changes in the API</b>
  <ul>
    <li>The <code>aboutQGLViewer()</code> method now displays the help window 'About' tab.</li>
  </ul>


  <h2>September 1st 2009 - 2.3.4</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Patches for compilation with Qt3 (thanks to Rainer and Florent).</li>
  </ul>

  <h2>July 14th 2009 - 2.3.3</h2>
  <b>New features</b>
  <ul>
    <li><code>snapshotToClipboard()</code> method binded to <code>Ctrl+C</code> eases snapshot creation.</li>
    <li>Visual Studio <code>.vcproj</code> project files added to <code>QGLViewer</code> and examples' directories.</li>
  </ul>

  <h2>July 7th 2009 - 2.3.2</h2>
  <b>New features</b>
  <ul>
    <li>A new <a href="dualLicensing.html">dual licensing</a> explanation page.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>printf</code> debug calls removed. Tested with the future version 4.4 of gcc.</li>
    <li><code>domUtils.h</code> includes fixed (thanks Frederic).</li>
    <li><code>Camera::initFromDOMElement</code> bug fixed (bugfinder Forrester).</li>
    <li>Snapshot rendering bug when using screen coordinates with large image size (tiled rendering) fixed. New <code>scaledFont()</code>      method to be used with <code>renderText()</code>. Bugfinder Jorik.</li>
  </ul>


  <h2>October 1st 2008 - 2.3.1</h2>
  <b>New features</b>
  <ul>
    <li>Exceptions added to the GPL Open Source license to make it compatible with CGAL.</li>
    <li>Although it still works, the compilation with Qt version 2 is no longer supported.</li>
    <li>The x3d example has been removed from the distribution since the x3d library is no longer maintained.</li>
  </ul>



  <h2>September 1st 2008 - 2.3.0</h2>
  <b>New features</b>
  <ul>
    <li>Default package distribution is now based on Qt4.</li>
    <li>A package installer is available for Windows, including the library, pre-compiled examples and full documentation.</li>
    <li>A new <a href="compilation.html">compilation with libQGLViewer</a> page explains how to compile your programs with QGLViewer.</li>
    <li>A new <a href="examples/overpainting.html">overpainting example</a> demonstrates mixing OpenGL and <code>QPainter</code>      drawing.</li>
    <li>A new <a href="examples/cameraLight.html">cameraLight example</a> shows how to place a light at camera position.</li>
    <li>A new <a href="examples/contribs.html#cornerAxis">cornerAxis example</a> displays the scene orientation in the lower
      left corner.</li>
  </ul>

  <b>Changes in the API</b>
  <ul>
    <li>A deleted <code>QGLViewer</code> is no longer removed from the <code>QGLViewerPool</code> (a <code>null</code> replaces
      it) in order to preserve viewer's indexes (used by <code>stateFileName</code>) (bug finder Gianluca).</li>
    <li>Unix install no longer features a static version of the library.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li>All the texts used by the library are now translatable. A french translation is available.</li>
    <li>Visual Studio installation procedure refreshed.</li>
    <li>Includes were modified to satisfy new gcc 4.3 cleaner standards (thanks Artur).</li>
    <li>All examples' warnings under Visual Studio have been fixed.</li>
    <li>Help window spaced and made fully translatable.</li>
  </ul>



  <h2>May 29th 2007 - 2.2.6</h2>
  <b>New features</b>
  <ul>
    <li>The <code>Camera</code> now saves and restores its scene center and radius in its XML representation.</li>
    <li>A new <code>Camera::getModelViewProjectionMatrix</code> convenient method (suggester Elmar).</li>
  </ul>


  <b>Bug fixes or improvements</b>
  <ul>
    <li>Compilation warnings with MSVC 2003 and 2005 fixed.</li>
    <li>Null viewer dimensions no longer cause divisions by 0 (bug finder Elmar).</li>
  </ul>


  <h2>January 31st 2007- 2.2.5</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>1 pixel shift in <code>Camera::pointUnderPixel()</code> fixed (bug finder Aurélien).</li>
    <li>Included file naming changed to follow Qt4 conventions (suggester Maxime).</li>
    <li>Lighting disabled for text drawing in the <code>screenCoordSystem</code> example (bug finder Greg).</li>
    <li>Documentation switched to doxygen 1.5 tab style (bug finder Xavier).</li>
  </ul>


  <h2>November 28th 2006 - 2.2.4</h2>
  <b>New features</b>
  <ul>
    <li>A new <code>DRIVE</code> MouseAction. Similar to fly, but speed depends on mouse vertical position (suggester Le Thanh).</li>
    <li>A new <a href="examples/standardCamera.html">standardCamera</a> example shows how to customize your <code>Camera</code>.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>orthogonalVec()</code> had problems for some vectors (bug finder David).</li>
    <li><code>MOVE_FORWARD</code> and <code>MOVE_BACKWARD</code> behavior improved.</li>
    <li>Double file overwriting question with Qt4 removed.</li>
  </ul>


  <h2>May 14th 2006 - 2.2.3</h2>
  <b>New features</b>
  <ul>
    <li><code>Camera::interpolateTo</code> moves the Camera to a target position.</li>
  </ul>

  <b>Changes in the API</b>
  <ul>
    <li><code>setSceneCenter</code> and <code>setSceneRadius</code> were made <code>virtual</code>.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li>Problem with constraints on frame hierarchy fixed (thanks Sylvain).</li>
    <li><code>unregisterTimer</code> error mesage fixed (thanks Xavier).</li>
    <li>Spurious brace correctly closed in examples' .pro (thanks Xavier).</li>
  </ul>


  <h2>May 14th 2006 - 2.2.2</h2>
  <b>New features</b>
  <ul>
    <li>Snapshot can be created at an arbitrary size (using image mosaicing) with optional oversampling anti-aliassing.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li>Problem with <code>QT3_SUPPORT</code> under Qt4 fixed (prevented designer plugin creation under windows).</li>
  </ul>


  <h2>March 8th 2006 - 2.2.1</h2>
  <b>New features</b>
  <ul>
    <li>Designer plugin installation directory can now be changed (suggester Markus).</li>
  </ul>

  <b>Changes in the API</b>
  <ul>
    <li>Deprecated <code>setSnapshotFilename</code> (lowercase n) method (kept for backward source code compatibility) was removed
      due to ActiveX conflicts (thanks Juergen).</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>saveSnapshot</code> was not recognized as a slot with Qt3 (bug finder Gheorghe).</li>
    <li>Generated snapshots files didn't have the proper <code>.jpg</code> extension.</li>
    <li>Animation added to the <a href="examples/contribs.html#blobWar">blobWar example</a>.</li>
  </ul>


  <h2>February 8th 2006 - 2.2.0</h2>
  <b>New features</b>
  <ul>
    <li><code>Camera::getFrustumPlanesCoefficients()</code> function (see the <a href="examples/frustumCulling.html">frustumCulling example</a>).</li>
    <li><code>Camera::setFromModelViewMatrix()</code> makes a <code>Camera</code> match a given <code>modelView</code> matrix
      (suggester Daria).</li>
    <li>Non-const <code>Vec::float*()</code> operator, so that <code>Vec</code> parameters can be passed to <code>float*</code>      filling methods.</li>
    <li><code>Quaternion::normalized()</code> method.</li>
    <li><code>Camera::rightVector()</code> that completes the <code>viewDirection()</code> and <code>upVector()</code> methods.</li>
    <li>New <a href="examples/frustumCulling.html">frustumCulling</a> and <a href="examples/contribs.html#blobWar">blobWar</a>      examples.</li>
    <li>In the <a href="examples/multiSelect.html">multiSelect</a> example, the selected set can now be manipulated.</li>
  </ul>

  <b>Changes in the API</b>
  <ul>
    <li><code>Camera::draw()</code> method parameters changed. Can now also draw ORTHOGRAPHIC Camera type.</li>
    <li><code>Camera::drawCamera()</code> static method removed. Use <code>(new Camera())->draw()</code> instead.</li>
    <li>Z-buffer display has been removed (not supported on many architectures). Code is available in <code>copyBufferToTexture()</code>.</li>
    <li><code>Quaternion::setFromRotationMatrix</code> takes a <code>double</code> (instead of
      <code>float</code>) parameter for better precision.</li>
    <li><code>Frame::referenceFrame()</code> now returns a <code>const Frame*</code> (suggester Xavier).</li>
    <li><code>Quaternion::setFromRotatedBase()</code> renamed <code>setFromRotatedBasis()</code>.</li>
    <li>Mouse events are now prioritarily interpreted as <code>ClickAction</code> and then passed to the
      <code>mouseGrabber()</code> if no <code>ClickAction</code> corresponds (was the inverse).</li>
    <li><code>drawAxis()</code> and <code>drawGrid()</code> no longer modify the OpenGL state (suggester Manu).</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li>Bug in <code>KeyFrameInterpolator</code> path drawing fixed (bug finder Manuel).</li>
    <li><code>Quaternion(from, to)</code> bug fixed for colinear vectors (bug finder Aurélien).</li>
    <li><code>Quaternion::setFromRotationMatrix</code> patched and made more robust.</li>
    <li>Camera's <code>zClippingCoefficient</code> correctly restored when <code>cameraIsEdited</code>.</li>
    <li><code>Frame::initFromDOMElement</code> normalizes the orientation.</li>
    <li>This changeLog file was split in two parts (see the <a href="changeLog-1.html">archive</a>).</li>
    <li><a href="http://www.libqglviewer.com/download_statistics.html">Download statistics</a> are back.</li>
    <li>Private classes removed from documentation.</li>
    <li>The <a href="examples/contribs.html#dvonn">dvonn</a> example now also compiles with Qt4.</li>
  </ul>


  <h2>September 18th 2005 - 2.1.1</h2>

  <b>Changes in the API</b>
  <ul>
    <li><code>snapshotFilename</code> renamed <code>snapshotFile<b>N</b>ame</code> (uppercased 'N').</li>
    <li>When negative, the <code>snapshotCounter</code> is not appended to <code>snapshotFileName</code> in automatic mode.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>saveSnapshot(fileName)</code> no longer opens a file dialog (bug finder Juergen).</li>
  </ul>



  <h2>September 14th 2005 - 2.1.0</h2>
  <p>
    The library now compiles with Qt version 2, 3 and 4. When enum or function names have been changed in Qt4, the QGLViewer
    documentation uses their Qt 4 version and gives Qt 2 & 3 translations.
  </p>
  <b>New features</b>
  <ul>
    <li>Support for Qt version 2, 3 and 4.</li>
    <li>Dual licensing : a LGPL version of the library is available for commercial applications.</li>
    <li><code>QGLViewer::drawArrow()</code> method from two points (thanks Sylvain).</li>
  </ul>

  <b>Changes in the API</b>
  <p>
    <code>Qt::ButtonState</code> (Qt versions 2 &amp; 3) has been split into
    <code>Qt::KeyboardModifiers</code> and <code>Qt::MouseButtons</code> in Qt4. Since these are just enums, previous code
    will still work.
  </p>

  <ul>
    <li><code>playPathStateKey()</code> and <code>addKeyFrameStateKey()</code> were renamed
      <code>playPathKeyboardModifiers()</code> and <code>addKeyFrameKeyboardModifiers()</code>.<br/> Their <code>int</code>      parameter has been replaced by a type-safe <code>Qt::KeyboardModifiers</code>.</li>
    <li><code>setHandlerStateKey</code> renamed <code>setHandlerKeyboardModifiers</code>.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>Camera</code> copy constructor fixed (bug finder Xavier).</li>
  </ul>


  <h2>August 10th 2005 - 2.0.1</h2>
  <b>Bug fixes or improvements</b>
  <ul>
    <li>Bounding box warning when viewing generated EPS snapshots fixed. Thanks Dominik.</li>
  </ul>

  <h2>June 24th 2005 - 2.0.0</h2>
  <b>New features</b>
  <ul>
    <li>Cyril Soler entirely rewrote the <a href="http://artis.imag.fr/Software/VRender/">VRender</a> vectorial rendering code.
      Smaller and better ouput files.</li>
    <li>New <code>QGLViewer::copyBufferToTexture()</code> to copy the frame buffer in a texture.</li>
    <li>New <code>Camera::drawCamera()</code> and <code>draw()</code> methods.</li>
    <li>New <code>QGLViewer::drawArrow()</code> static method.</li>
    <li>New <code>QGLViewer::mouseGrabberIsEnabled()</code> method.</li>
    <li>Copy constructor and <code>=</code> operator implemented for <code>Camera</code> and
      <code>KeyFrameInterpolator</code> classes.</li>
  </ul>

  <b>Changes in the API</b>
  <br/> The API has been cleaned up and simplified. The documentation has entirely been rewritten.
  <ul>
    <li>Vec</li>
    <ul>
      <li><code>address()</code> deprecated, use <code>operator const float*</code> instead.</li>
      <li><code>sqNorm()</code> renamed <code>Vec::squaredNorm()</code>.</li>
    </ul>
    <li>Quaternion</li>
    <ul>
      <li>Constructor with half angle removed.</li>
      <li><code>randomOrientation</code> renamed <code>randomQuaternion</code>.</li>
      <li><code>operator*</code> now returns a non-const <code>Quaternion</code>.</li>
    </ul>
    <li>Frame</li>
    <ul>
      <li><code>referenceFrame()</code> is no longer <code>const</code>.</li>
      <li><code>setOrientationAxisAngle()</code> and <code>Frame::setRotationAxisAngle()</code> removed.</li>
      <li><code>translate(float t[3])</code> and <code>Frame::rotate(float q[4])</code> removed: use <code>Vec</code> and <code>Quaternion</code>        equivalents instead.</li>
      <li><code>invert()</code> and <code>Frame::worldInvert()</code> removed: use <code>inverse()</code> instead.</li>
      <li><code>inverseMatrix()</code> and <code>worldInverseMatrix()</code> removed: use <code>inverse().matrix()</code> instead.</li>
      <li><code>setReferenceFrame()</code> emits the <code>modified()</code> signal as expected.</li>
    </ul>
    <li>SpinningFrame</li>
    <ul>
      <li><code>SpinningFrame</code> class has been removed. Spinning was integrated in <code>ManipulatedFrame</code>.</li>
    </ul>
    <li>ManipulatedFrame</li>
    <ul>
      <li><code>spinned</code> signal renamed <code>spun</code>.</li>
    </ul>
    <li>MouseGrabber</li>
    <ul>
      <li>Mouse event method now all take a non-const <code>Camera</code> parameter.</li>
    </ul>
    <li>AxisPlaneConstraint</li>
    <ul>
      <li><code>float</code> methods removed: use <code>Vec</code> equivalents instead.</li>
      <li><code>*Dir()</code> methods renamed <code>*Direction()</code>.</li>
    </ul>
    <li>KeyFrameInterpolator</code>
      <ul>
        <li><code>keyFramePosition()</code> and <code>keyFrameOrientation()</code> removed: use <code>KeyFrame().position()</code>          and <code>KeyFrame().orientation()</code> instead.</li>
        <li><code>finished()</code> renamed <code>endReached()</code>.</li>
      </ul>
      <li>Camera</li>
      <ul>
        <li>Methods with <code>float</code> parameter removed. Use their <code>Vec(x,y,z)</code> and <code>Quaternion(q0,q1,q2,q3)</code>          equivalents instead.</li>
        <li><code>editCameraPath()</code> and <code>cameraPathIsEdited()</code> removed.</li>
        <li><code>float</code> versions of <code>getModelViewMatrix</code> and
          <code>getProjectionMatrix</code> removed. Use <code>double</code> equivalents instead.</li>
        <li>Methods using pixel input (<code>pointUnderPixel()</code>...) take <code>QPoint</code> parameter instead of x and
          y. Use <code>QPoint(x,y)</code> constructor if needed.</li>
        <li><code>nbPaths()</code> removed. Camera now contains an arbitrary number of paths.</li>
        <li><code>fitScreenRegion</code> now takes a <code>QRect</code> parameter.</li>
        <li><code>getOrthoWidthHeight</code> made <code>virtual</code>.</li>
        <li><code>ORTHO</code> type renamed <code>ORTHOGRAPHIC</code>.</li>
        <li><code>zNearCoef</code> and <code>zClippingCoef</code> renamed <code>zNearCoefficient</code> and <code>zClippingCoefficient</code>.</li>
        <li><code>setWindowWidthAndHeight</code> renamed <code>setScreenWidthAndHeight</code>.</li>
        <li><code>playKeyFramePath, deleteKeyFramePath and resetKeyFramePath</code> renamed <code>playPath, deletePath and resetPath</code>.</li>
        <li><code>addKeyFrame</code> renamed <code>addKeyFrameToPath</code>.</li>
        <li><code>distanceToScreen()</code> renamed <code>physicalDistanceToScreen()</code>.</li>
        <li><code>distanceToZeroParallaxPlane()</code> renamed <code>focusDistance()</code>.</li>
        <li><code>IODist</code> renamed <code>IODistance</code>.</li>
        <li><code>setCameraFromProjectionMatrix()</code> renamed <code>setFromProjectionMatrix()</code>.</li>
      </ul>
      <li>QGLViewer</li>
      <ul>
        <li><code>cameraPathIsEdited</code> and <code>editCameraPath</code> renamed <code>cameraIsEdited</code> and <code>setCameraIsEdited</code>.</li>
        <li><code>EDIT_CAMERA_PATHS</code> renamed <code>EDIT_CAMERA</code> in prevision of a future camera edition.</li>
        <li><code>setDrawAxis, setDrawGrid, setDisplayFPS, setDisplayText</code> renamed
          <code>setAxisIsDrawn, setGridIsDrawn, setFPSIsDisplayed, setTextIsEnabled</code>.</li>
        <li><code>float</code> methods removed. Use <code>Vec</code> and <code>Quaternion</code> equivalents instead.</li>
        <li><code>drawAxis</code> made <code>static</code>.</li>
        <li><code>setMouseStateKey</code> renamed <code>setHandlerStateKey</code>.</li>
        <li><code>keyFrameKey</code> renamed <code>pathKey</code>, with swapped parameters.</li>
        <li><code>playKeyFramePathStateKey</code> renamed <code>playPathStateKey</code>.</li>
        <li><code>keyboardAccelerator</code> (resp. <code>setKeyboardAccelerator</code>) renamed
          <code>shortcut</code> (resp. <code>setShortcut</code>).</li>
        <li><code>select, beginSelection, endSelection </code> and <code>postSelection</code> use
          <code>QPoint</code> instead of <code>x</code> and <code>y</code>.</li>
        <li><code>toggleAnimationMode</code> renamed <code>toggleAnimation</code>.</li>
        <li><code>version</code> syntax in state file changed and is now compared with current version on restoration.</li>
        <li>Destructor now also deletes the <code>camera()</code>.</li>
        <li><code>connectSignalToAllViewers, disconnectSignalToAllViewers</code> and <code>updateGLForAllViewers</code> removed.
          Use <code>QGLViewerPool</code> insead.</li>
        <li>Keys F1-F12 are binded to camera keyFrameInterpolator indexes 1..12 (was 0..11).</li>
      </ul>
  </ul>

  Other modifications:
  <ul>
    <li><code>zip</code> and <code>tar</code> files names include release number.</li>
    <li><code>rpm</code> now includes a static version of the library.</li>
  </ul>

  <b>Bug fixes or improvements</b>
  <ul>
    <li><code>QGLViewer::stateFileName</code> no longer skips the directory prefix.</li>
    <li><code>QGLViewer::drawLight</code> nicer and fixed.</li>
    <li>WheelEvents now use <code>fastDraw()</code>. A final <code>draw()</code> is now triggered at a short delay after the
      last wheel event.</li>
  </ul>

  <h2>Previous changeLog</h2>

  See the <a href="changeLog-1.html">previous changeLog</a> (Version 1.2.5 to 1.3.9, July 2002 to April 2005).

  <br/><br/> Please send any comment, suggestion or problem by <a href="mailto:contact@libqglviewer.com">e-mail</a>.

  <p>
    <a href="http://validator.w3.org/check/referer"><img src="images/xhtml.png" alt="Valid XHTML 1.0!" height="31" width="88"/></a>
    <a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="images/css.gif" alt="Valid CSS!" width="88" height="31"/></a>
    <i>Last modified on Sunday, March 13, 2022.</i>
  </p>

</body>

</html>
